#include"../../include/SplitToolCppJieba.h"
#include"../../include/DictProducer.h"
#include "../../include/ConfigFile.h"
#include<iostream>
#include<memory>
using namespace std;

void createZh()
{
    //创建一个配置文件类作为切割函数的传入参数
    ConfigFile *confs = ConfigFile::getInstance();
    string stopZn = confs->getConf()["stopZhPath"];

    Configuration conf(stopZn);
    //创建一个切割中文的智能指针类
    unique_ptr<SplitTool> ptr(new SplitToolCppJieba(conf));

    //第一个参数为中文文件所在的文件夹，第二个参数为中文的切割方法
    string pathZn = confs->getConf()["dictZhYuliaoDir"];
    DictProducer dict(pathZn,ptr.get());
    //显示目录下的所有文件文件名
    //dict.showFiles();
    //创建中文字典
    
    dict.buildCnDict();
    //创建中文索引，一定先有字典再有索引
    dict.createIndex();
    //字典输出
    string znDict = confs->getConf()["dictZhPath"];
    dict.storeDict(znDict.c_str());
    cout<<"生成中文字典成功！"<<endl;
    //索引输出
    string znIndex = confs->getConf()["indexZhPath"];
    dict.storeIndex(znIndex.c_str());
}

void createEn()
{
    //同测试1   传入参数改为一个参数，并且该参数为英文文件的文件名
    ConfigFile *confs = ConfigFile::getInstance();
    string fileEn = confs->getConf()["dictEnYuliaoPath"];
    DictProducer dict(fileEn);
    dict.buildEnDict();
    dict.createIndex();
    string enDict = confs->getConf()["dictEnPath"];
    dict.storeDict(enDict.c_str());
    string enIdx = confs->getConf()["indexEnPath"];
    dict.storeIndex(enIdx.c_str());
}

int main()
{
    createZh();
    createEn();
    return 0;
}
